#ifndef _SEQUENCE_LIST_H_
#define _SEQUENCE_LIST_H_

#include<stdio.h>

typedef enum 
{
    FAIL = -1,
    ERROR,
    OK
}Status_t;/*表示状态信息*/

typedef struct 
{
    char name[40];
    char token[20];
    float price;
}Book_t;/*数据元素为图书信息*/

typedef Book_t ElemType ;

typedef struct 
{
    ElemType *elem;/*数据首地址*/
    int length;/*已存数据长度*/
    int capacity;/*当前总容量*/
}S_list_t;

/*初始化顺序表*/
Status_t Init_List(S_list_t **list);
/*打印顺序表*/
void Print_List(S_list_t *list);
/*销毁顺序表*/
Status_t Destroy_List(S_list_t **s_list);

/*检查顺序表是否需要扩容*/
Status_t is_Need_Capacity(S_list_t *list);

/*扩容顺序表*/
Status_t Increase_Capacity(S_list_t *list);

/*尾部插入元素*/
S_list_t* Push_Back(S_list_t *list,ElemType *elem);

/*尾部删除元素*/
S_list_t* Pop_Back(S_list_t *list);

/*头部插入元素*/
S_list_t* Push_Front(S_list_t *list,ElemType *elem);

/*头部删除元素*/
S_list_t* Pop_Front(S_list_t *list);

/*任意位置插入元素*/
S_list_t* Insert_Elem(S_list_t *list,int order,ElemType *elem);

/*任意位置删除元素*/
S_list_t* Delete_Elem(S_list_t *list,int order);

/*查询数据表：根据元素顺序查询元素*/
ElemType* Find_Elem_use_Order(S_list_t *list,int order);

/*查询数据表：根据元素查询元素顺序*/
int Find_Order_use_Elem(S_list_t *list,ElemType *elem);

/*修改任意位置的元素*/
S_list_t* Change_Elem(S_list_t *list,int order,ElemType *elem); 

#endif